
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>5、Java国际化程序 - 学习卡片</title>
      <style>
        body { font-family: sans-serif; background-color: #f0f8ff; color: #333; display: flex; flex-direction: column; align-items: center; padding: 50px 20px; }
        .header h1 { font-size: 32px; }
        .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; width: 100%; max-width: 1200px; }
        .card-container { perspective: 1200px; cursor: pointer; height: 250px; }
        .card { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; transition: transform 0.7s; border-radius: 16px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
        .card-container.flipped .card { transform: rotateY(180deg); }
        .card-face { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; display: flex; flex-direction: column; box-sizing: border-box; border-radius: 16px; background-color: #fff; padding: 24px; }
        .card-back { background-color: #f0fff4; transform: rotateY(180deg); justify-content: space-between; }
        .card-category { font-size: 14px; color: #0052d9; margin-bottom: 8px; font-weight: 500; }
        .card-question { font-size: 20px; font-weight: 500; flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; }
        .card-answer-wrapper { flex-grow: 1; overflow-y: auto; }
        .card-answer { font-size: 15px; line-height: 1.7; }
        .card-footer { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 16px; margin-top: 16px; }
        .card-source { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 12px; margin-top: 12px; }
      </style>
    </head>
    <body>
      <div class="header">
        <h1>5、Java国际化程序 - 学习卡片</h1>
      </div>
      <div class="grid-container">
        
    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">请解释国际化 (i18n) 和本地化 (l10n) 之间的区别与联系。</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">国际化（i18n）是指设计和开发软件，使其能够在不同语言和文化环境下运行，而无需进行工程改动。本地化（l10n）是指为特定语言或文化定制软件，使其在特定的地域环境中看起来和感觉起来像是专门为该环境设计的一样。两者共同工作，确保软件能适应全球市场的需求。</div>
          </div>
          <div class="card-source">来源: 什么是国际化（i18n）和本地化（l10n）</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">在Java国际化中，什么是资源束（Resource Bundle），它扮演什么核心角色？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">资源束是Java国际化的核心概念之一，它用于存储与特定语言或地区相关的本地化信息，如文本、图像等。Java通过 `ResourceBundle` 类来管理这些资源，开发人员可以根据不同的Locale提供相应的资源束来实现国际化。</div>
          </div>
          <div class="card-source">来源: 核心技术点 - 资源束（Resource Bundle）</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">Java提供了哪些关键类来处理不同语言环境下的日期、时间和数字格式化？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">Java提供了一系列相关类，如 `java.text.DateFormat` 和 `java.text.NumberFormat`，用于格式化和解析日期、时间、数字等信息。这些类能够支持不同语言和地区的特定格式要求。</div>
          </div>
          <div class="card-source">来源: 核心技术点 - 格式化和日期/时间处理</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">模式</div>
          <div class="card-question">当需要在国际化的消息文本中动态插入参数（如用户名或日期）时，应使用哪个Java类？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">模式</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">应该使用 `MessageFormat` 类。该类提供了丰富的格式化功能，支持占位符和参数替换，能够根据提供的模式动态生成多语言的消息文本。</div>
          </div>
          <div class="card-source">来源: 最佳实践 - 格式化字符串</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">不同语言的复数规则（如英语的“1 file” vs “2 files”）在Java中可以通过哪个类来处理？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">Java 8 引入的 `java.text.ChoiceFormat` 类提供了一种灵活的方式来处理不同语言的复数形式，使得国际化消息处理更加方便。</div>
          </div>
          <div class="card-source">来源: 最佳实践 - 复数形式处理</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">为什么说Java对Unicode的完全支持是其国际化能力的一个重要基础？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">因为Java完全支持Unicode字符集，能够处理世界各种语言的字符和文字，包括非拉丁语系的文字和表情符号。这使得Java国际化应用能够轻松处理各种语言的输入和输出，确保程序在全球具有良好的兼容性。</div>
          </div>
          <div class="card-source">来源: 最佳实践 - Unicode支持</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">在开发国际化应用时，Java提供了什么机制来优化资源加载的性能和管理？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">Java提供了一系列的资源管理和缓存机制，例如 `java.util.ResourceBundle.Control` 类，它可以帮助开发人员控制资源束的加载过程和缓存策略，从而优化国际化应用的性能。</div>
          </div>
          <div class="card-source">来源: 最佳实践 - 资源管理和缓存</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">在需要对多语言文本进行正确排序或比较时，应该使用Java中的哪个类？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">应该使用Java的 `Collator` 类和 `CollationKey` 类。这些类提供了多语言文本排序和比较的支持，能够根据特定语言的规则进行正确的排序。</div>
          </div>
          <div class="card-source">来源: 多语言搜索和排序</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">像Java Swing和JavaFX这样的GUI库是如何实现用户界面（UI）本地化的？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">这些GUI库提供了本地化支持，可以根据指定的 `Locale` 加载相应语言的用户界面资源。开发人员通常将UI文本（如标签）存储在资源束中，程序会根据 `Locale` 动态加载并显示正确语言的文本。</div>
          </div>
          <div class="card-source">来源: 核心技术点 - 本地化用户界面（L10n）</div>
        </div>
      </div>
    </div>

      </div>
    </body>
    </html>
